package com.yuw.types;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class TestDriverListWithType {
    public static void main(String[] args) {
        // List集合的使用
        System.out.println("-----------------------------------");
        test01();
        System.out.println("-----------------------------------");
        test02();
    }

    /**
     * List接口——LinkedList子类
     */
    public static void test02() {
        // 创建List对象  面向接口的编程思想
        List<String> lst = new LinkedList<>();  // 如果集合指明了泛型类型，则集合中只能存储指明的泛型类型，或者与之默认兼容的类型

        // 存入元素
        lst.add("zhangsan");
        lst.add("lisi");
        lst.add("wangwu");
        lst.add("zhaoliu");
        // 重复元素
        lst.add("zhaoliu");
        // 加入null值
        lst.add(null);
        lst.add(null);
        // 取出和遍历元素
        System.out.println("使用标准的for循环进行List的迭代遍历：");
        for (int i = 0; i < lst.size(); i++) {
            System.out.println("  " + lst.get(i));
        }

        System.out.println("使用Iterator迭代器进行List循环遍历：");
        Iterator<String> it = lst.iterator();
        while (it.hasNext()) {
            // 取出当前遍历的元素
            String str = it.next();
            System.out.println("  " + str);
        }

        System.out.println("使用foreach增强型的for循环进行遍历：");
        for (String obj : lst) {
            System.out.println("  " + obj);
        }
    }

    /**
     * List接口——ArrayList子类
     */
    public static void test01() {
        // 创建List对象  面向接口的编程思想
        List lst = new ArrayList();

        // 存入元素
        lst.add("zhangsan");
        lst.add("lisi");
        lst.add("wangwu");
        lst.add("zhaoliu");
        // 重复元素
        lst.add("zhaoliu");
        // 加入null值
        lst.add(null);
        lst.add(null);
        // 取出和遍历元素
        System.out.println("使用标准的for循环进行List的迭代遍历：");
        for (int i = 0; i < lst.size(); i++) {
            System.out.println("  " + lst.get(i));
        }

        System.out.println("使用Iterator迭代器进行List循环遍历：");
        Iterator it = lst.iterator();
        while (it.hasNext()) {
            // 取出当前遍历的元素
            Object object = it.next();
            System.out.println("  " + object);
        }

        System.out.println("使用foreach增强型的for循环进行遍历：");
        for (Object obj : lst) {
            System.out.println("  " + obj);
        }
    }

}
